/**
 * 智能填写
 * @author Moxun<mxnstrive@gmail.com>
 * @copyright © 2024 http://jinpin.love/
 */
 
 import content from '@/utils/content'
 import { TextFiller, MutiTextFiller, MapKeywordContentTextFiller, RadioFiller, CheckBoxFiller, ConcatTextFiller, UploadFileFiller } from './CommonFillters'
  
 function comprehensive_salaryTextFiller(ctx) {
     var rangeKeys = ctx.propName.split('|');
     ctx.keyword.keys.forEach(k => {
       const mat = content.matchWords(ctx.content, k.keywords)[0]
       if (!mat || mat.length == 0) {
         // 未匹配到
         ctx.target[rangeKeys[0]] = ''
         ctx.target[rangeKeys[1]] = ''
       } else if (mat.length == 1) {
         // 未分组
         var ary2 = mat[0].split('-')
         ctx.target[rangeKeys[0]] = ary2[0] || ''
         ctx.target[rangeKeys[1]] = ary2[1] || ''
       } else {
         ctx.target[rangeKeys[0]] = mat[1]
         ctx.target[rangeKeys[1]] = mat[2]
       }
     })
 }
  
 function working_lifes_idRadioFiller(ctx) {
     let result = RadioFiller(ctx)
     return result || '7'
 }
  
 function pay_money_modeRadioAndTextFiller(ctx) {
     let result = ''
     let words = null
     ctx.keyword.keys.some(k => {
         words = content.pickWords(content.matchWords(ctx.content, k.keywords))
         if (words) {
             result = k.keyId
             return true
         }
     })
     ctx.target.$nextTick(() => {
         ctx.target.first_value_input = words ? words.replace(/[^\d]/g, '') : ''
     })
     return result
 }
  
 const FillerMap = {
     // 发布类型
     job_category_id: {
         fill: ctx => { return RadioFiller(ctx) || '1' },
     },
     // 企业名称
     enterprise_name: {
         fill: TextFiller,
     },
     // 招聘职位
     recruiting_position: {
         fill: MutiTextFiller,
     },
     // 职位属性
     position_ids: {
         fill: CheckBoxFiller,
     },
     // 班制属性
     class_attribute_ids: {
         fill: CheckBoxFiller,
     },
     // 上班是否可带手机
     Iswithphones: {
         fill: CheckBoxFiller,
     },
     // 上班是否穿无尘服
     Iswearcleanclothess: {
         fill: CheckBoxFiller,
     },
     // 入职是否体检
     visions: {
         fill: CheckBoxFiller,
     },
     // 上传图片
     photos: {
         fill: ctx => UploadFileFiller(ctx, 'photos_list_url'),
     },
     // 上传视频
     job_videos: {
         fill: ctx => UploadFileFiller(ctx, 'job_videos_url'),
     },
     // 算薪方式
     pay_money_mode: {
         fill: pay_money_modeRadioAndTextFiller,
     },
     // 综合工资范围
     'min_comprehensive_salary|max_comprehensive_salary': {
         fill: comprehensive_salaryTextFiller,
     },
     // 每周可借支的金额
     lend_money_amount: {
         fill: MutiTextFiller,
     },
     // 发薪日
     payday_ids: {
         fill: CheckBoxFiller,
     },
     // 福利
     other_benefits: {
         fill: CheckBoxFiller,
     },
     // 学历
     educations: {
         fill: CheckBoxFiller,
     },
     // 工作经验
     working_lifes_id: {
         fill: working_lifes_idRadioFiller,
     },
     // 证件类型（多选）
     certificate_types: {
         fill: CheckBoxFiller,
     },
     // 联系人
     contact: {
         fill: ConcatTextFiller,
     },
     // 手机号
     phone: {
         fill: ConcatTextFiller,
     },
     // 面试详细地址
     addressValue: {
         fill: MapKeywordContentTextFiller,
     },
     // 上班详细地址
     addressJobValue: {
         fill: TextFiller,
     },
     // 代招费
     generation_of_commission: {
         fill: TextFiller,
     },
     // 代招费类型
     fee_unit: {
         fill: RadioFiller,
     },
     // 代招说明
     generation_instructions: {
         fill: TextFiller,
     },
     // 下游合作费
     downstream_cooperation_fee: {
         fill: TextFiller,
     },
     // 下游合作费类型
     cooperation_fee_unit: {
         fill: RadioFiller,
     },
     // 下游合作费说明
     downstream_cooperation_fee_desc: {
         fill: TextFiller,
     },
     // 文字备注
     job_notes: {
         fill: MutiTextFiller,
     },
     // 图片备注
     job_notes_photos: {
         fill: ctx => UploadFileFiller(ctx, 'job_notes_photos_url'),
     },
     // 视频备注
     job_notes_video: {
         fill: ctx => UploadFileFiller(ctx, 'job_notes_video_url'),
     },
 }
  
 function fill(ctx) {
     let filler = FillerMap[ctx.propName]
     if (filler) {
         const result = filler.fill(ctx)
         if (result != null) {
             ctx.target[ctx.propName] = result
         }
     } else {
         console.warn('no prop fill handler. [%o]', ctx.propName)
     }
 }
  
 export default {
     fill
 }
 